package com.paraz.cst;

/**
 * Processor.
 * 
 * May return with a result immediately, or pass the result to a callback.
 * 
 * @author mparaz
 *
 */
public interface CstProcessor<E> extends Cst<E> {
	/**
	 * Process immediately, or return CstProcessorResult.NONE and call back.
	 * @param request
	 * @param reference Reference for tracking who made the request
	 * @param handler Callback handler
	 * @return
	 */
	CstProcessorResult process(CstProcessorRequest request, E reference, CstProcessorResultHandler<E> handler);
	
}
